﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BUS;
namespace QuanLyNhaHang
{
    public partial class QLBanHang : Form
    {
        DataTable DSKH, DSMonAn, DSChiTiet, InPhieu,BangKhuyenMai;
        float ttsaukm = 0;
        public QLBanHang()
        {
            InitializeComponent();
        }
        private void LayDSKH()
        {
            DSKH = BUSBanHang.DSKH();
            dataGridView_khachhang.DataSource = DSKH;
            dataGridView_khachhang.Columns[0].Visible = false;
            dataGridView_khachhang.Columns[1].HeaderText = "Họ Tên";
            dataGridView_khachhang.Columns[1].Width = 180;
            dataGridView_khachhang.Columns[2].Visible = false;
            dataGridView_khachhang.Columns[3].Visible = false;
            
        }
        private void LayMonAn()
        {
            DSMonAn = BUSBanHang.DSMon();
            dataGridView_monan.DataSource = DSMonAn;
            dataGridView_monan.Columns[0].Visible = false;
            dataGridView_monan.Columns[0].HeaderText = "Mã Món Ăn";
            dataGridView_monan.Columns[1].HeaderText = "Tên Món Ăn";
            dataGridView_monan.Columns[1].Width = 127;
            dataGridView_monan.Columns[2].HeaderText = "Giá Tiền";
        }
        private void TaoCTPhieu()
        {
            DSChiTiet = new DataTable();
            DataColumn columns0 = new DataColumn("makh", typeof(string));
            DataColumn columns1 = new DataColumn("tenkh", typeof(string));
            DataColumn columns2 = new DataColumn("tenmonan", typeof(string));
            DataColumn columnsa = new DataColumn("mamon", typeof(string));
            DataColumn columnse = new DataColumn("dongia", typeof(string));
            DataColumn columns3 = new DataColumn("soluong", typeof(string));
            DataColumn columns4 = new DataColumn("thanhtien", typeof(string));
            DataColumn columns5 = new DataColumn("ngayxuat", typeof(string));
            DataColumn columns6 = new DataColumn("diachi", typeof(string));
            DSChiTiet.Columns.Add(columns0);
            DSChiTiet.Columns.Add(columns1);
            DSChiTiet.Columns.Add(columns2);
            DSChiTiet.Columns.Add(columnsa);
            DSChiTiet.Columns.Add(columnse);
            DSChiTiet.Columns.Add(columns3);
            DSChiTiet.Columns.Add(columns4);
            DSChiTiet.Columns.Add(columns5);
            DSChiTiet.Columns.Add(columns6);
        }
        private void GanCTPhieu()
        {
            TaoCTPhieu();
            dataGridView_chitiet.DataSource = DSChiTiet;
            dataGridView_chitiet.Columns[0].HeaderText = "Mã Khách Hàng";
            dataGridView_chitiet.Columns[0].Visible = false;
            dataGridView_chitiet.Columns[1].HeaderText = "Tên Khách Hàng";
            dataGridView_chitiet.Columns[2].HeaderText = "Tên Món Ăn";
            dataGridView_chitiet.Columns[3].Visible = false;
            dataGridView_chitiet.Columns[4].HeaderText = "Đơn Giá";
            dataGridView_chitiet.Columns[5].HeaderText = "Số Lượng";
            dataGridView_chitiet.Columns[6].HeaderText = "Thành Tiền";
            dataGridView_chitiet.Columns[7].HeaderText = "Ngày Xuất";
            dataGridView_chitiet.Columns[8].HeaderText = "Địa Chỉ";
        }
        private void QLBanHang_Load(object sender, EventArgs e)
        {
            LayDSKH();
            LayMonAn();
            GanCTPhieu();

        }
        private void TinhTien()
        {
            int id = dataGridView_monan.CurrentCell.RowIndex;
            if (id >= 0)
            {
                
                float giatien = 0;
                float.TryParse(dataGridView_monan.Rows[id].Cells[2].Value.ToString().Trim(), out giatien);
                float thanhtien = int.Parse(numericUpDown_soluong.Value.ToString()) * giatien;
                textBox_thanhtien.Text = thanhtien.ToString();
            }
        }
        private void KTKhuyenMai(int id, float tongtien)
        {
            BangKhuyenMai = BUSBanHang.BangKhuyenMai();
            float tonggiatri = float.Parse(BangKhuyenMai.Rows[0][0].ToString());
            int DiemCong = int.Parse(BangKhuyenMai.Rows[0][1].ToString());
            int DiemGioiHan = int.Parse(BangKhuyenMai.Rows[0][2].ToString());
            MessageBox.Show(DiemGioiHan.ToString());
            float SoTienDuocGiam = float.Parse(BangKhuyenMai.Rows[0][3].ToString());
            if (int.Parse(textBox_diemso.Text) > DiemGioiHan)
            {
                float temp = (tongtien * SoTienDuocGiam) / 100;
                ttsaukm = tongtien - temp;
                BUSBanHang.CapNhatDiemKH(id, 0);
            }
            else if (tongtien > tonggiatri)
            {
                BUSBanHang.CapNhatDiemKH(id, int.Parse(textBox_diemso.Text) + DiemCong);
            }
            else ttsaukm = tongtien;

        }
        private void numericUpDown_soluong_ValueChanged(object sender, EventArgs e)
        {
            TinhTien();
        }

        private void dataGridView_khachhang_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            int id = dataGridView_khachhang.CurrentCell.RowIndex;
            textBox_diachi.Text = dataGridView_khachhang.Rows[id].Cells[2].Value.ToString().Trim();
            textBox_diemso.Text = dataGridView_khachhang.Rows[id].Cells[3].Value.ToString().Trim();
        }

        private void button_timkh_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(textBox_timtenkh.Text) == false && string.IsNullOrWhiteSpace(textBox_timtenkh.Text) == false)
            {
                DSKH = BUSBanHang.TimKH(textBox_timtenkh.Text);
                dataGridView_khachhang.DataSource = DSKH;
                dataGridView_khachhang.Columns[0].Visible = false;
                dataGridView_khachhang.Columns[1].HeaderText = "Họ Tên";
                dataGridView_khachhang.Columns[1].Width = 180;
                dataGridView_khachhang.Columns[2].Visible = false;
                dataGridView_khachhang.Columns[3].Visible = false;

            }
            else
            {
                MessageBox.Show("Hãy nhập tên của khách hàng để tìm thông tin.", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                textBox_timtenkh.Focus();
                return;
            }
        }

        private void button_timmonan_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(textBox_tenmonan.Text) == false && string.IsNullOrWhiteSpace(textBox_tenmonan.Text) == false)
            {
                DSMonAn = BUSBanHang.Timmonan(textBox_tenmonan.Text);
                dataGridView_monan.DataSource = DSMonAn;
                dataGridView_monan.DataSource = DSMonAn;
                dataGridView_monan.Columns[0].Visible = false;
                dataGridView_monan.Columns[0].HeaderText = "Mã Món Ăn";
                dataGridView_monan.Columns[1].HeaderText = "Tên Món Ăn";
                dataGridView_monan.Columns[1].Width = 127;
                dataGridView_monan.Columns[2].HeaderText = "Giá Tiền";

            }
            else
            {
                MessageBox.Show("Hãy nhập tên của khách hàng để tìm thông tin.", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                textBox_timtenkh.Focus();
                return;
            }
        }

        private void button_them_Click(object sender, EventArgs e)
        {
            int id_kh, id_monan;
            
            if (int.Parse(numericUpDown_soluong.Value.ToString()) > 0)
            {
                TinhTien();
                float tongtien_cur = 0;
                id_kh = dataGridView_khachhang.CurrentCell.RowIndex;
                id_monan = dataGridView_monan.CurrentCell.RowIndex;
                DataRow newrows = DSChiTiet.NewRow();
                newrows[0] = dataGridView_khachhang.Rows[id_kh].Cells[0].Value.ToString().Trim();
                newrows[1] = dataGridView_khachhang.Rows[id_kh].Cells[1].Value.ToString().Trim();
                newrows[2] = dataGridView_monan.Rows[id_monan].Cells[1].Value.ToString().Trim();
                newrows[3] = dataGridView_monan.Rows[id_monan].Cells[0].Value.ToString().Trim();
                newrows[4] = dataGridView_monan.Rows[id_monan].Cells[2].Value.ToString().Trim();
                newrows[5] = numericUpDown_soluong.Value.ToString();
                newrows[6] = textBox_thanhtien.Text;
                newrows[7] = dateTimePicker_ngayban.Value.ToString();
                newrows[8] = dataGridView_khachhang.Rows[id_kh].Cells[2].Value.ToString().Trim();
                DSChiTiet.Rows.Add(newrows);
                for (int i = 0; i < dataGridView_chitiet.RowCount; i++)
                {
                    tongtien_cur = tongtien_cur + float.Parse(dataGridView_chitiet.Rows[i].Cells[6].Value.ToString().Trim());
                }
                KTKhuyenMai(int.Parse(dataGridView_khachhang.Rows[id_kh].Cells[0].Value.ToString().Trim()), tongtien_cur);
                label_tongtien.Text = ttsaukm.ToString();
            }
            else
            {
                MessageBox.Show("Phải chọn thông tin khách hàng, Món ăn, và số lượng món trước khi thêm", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
        }

        private void button_huy_Click(object sender, EventArgs e)
        {
            if (dataGridView_chitiet.Rows.Count > 0)
            {
                int id = dataGridView_chitiet.CurrentCell.RowIndex;
                DialogResult confirm = MessageBox.Show("Bạn muốn xóa thông tin này?", "Thông Báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (confirm == DialogResult.Yes)
                {
                    DSChiTiet.Rows.RemoveAt(id);
                    MessageBox.Show("Đã xóa thành công", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }

        private void button_luuphieu_Click(object sender, EventArgs e)
        {
            int id_khach = dataGridView_khachhang.CurrentCell.RowIndex;
            if (dataGridView_chitiet.Rows.Count > 0)
            {
                string makh = dataGridView_khachhang.Rows[id_khach].Cells[0].Value.ToString().Trim();
                int maphieu = BUSBanHang.LuuPhieuXuat(makh, dateTimePicker_ngayban.Value, float.Parse(label_tongtien.Text));
                if (maphieu > 0)
                {
                    if (BUSBanHang.LuuChiTietPhieuXuat(maphieu, DSChiTiet) == 0)
                    {
                        MessageBox.Show("Không thể lưu chi tiết phiếu xuất, có lỗi hệ thống.", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                    else
                    {
                        MessageBox.Show("Đã lưu thông tin phiếu xuất.", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                else
                {
                    MessageBox.Show("Không thể lấy được mã phiếu xuất.", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
            }
            else
            {
                MessageBox.Show("Chi tiết phiếu xuất phải có thông tin trước khi lưu.", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
        }

        private void button_in_Click(object sender, EventArgs e)
        {
            var obj = new InPhieuXuat();
            obj.SourceRP = DSChiTiet;
            obj.tongsotien = label_tongtien.Text;
            obj.Show();
        }

        private void button_thoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void button_reset_Click(object sender, EventArgs e)
        {
            DSChiTiet.Clear();
        }
    }
}
